#pragma once

#include <map>
#include <atomic>
#include <functional>
#include <boost/property_tree/json_parser.hpp>
#include "tcp_message.hpp"
#include "rockapi.h"
#include "app_common.h"

using MessageType_t = std::map<std::string, int>;
class TcpServerSession;
class MessageHandler
{
public:

	MessageHandler(const MessageType_t& messageTypes, TcpServerSession* session);
	~MessageHandler() {}
	void readHeader(const TcpMessage& msg);
	void readBody(const TcpMessage& msg);
	void start();
	void sendLoginRsp(const LoginRsp_t& rsp);
	void sendLogoutRsp(const LogoutRsp_t& rsp);
	void sendPicRsp(const FrameNtf_t& rsp);

private:
	MessageHandler() = delete;

	void onHeartReq(const TcpMessage& msg);
	void onLoginReq(const TcpMessage& msg);
	void onLogoutReq(const TcpMessage& msg);
 
	
	MessageType_t _messageTypes;
	TcpServerSession* _session = nullptr;
};